home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / table / DefaultTableColumnModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.3 KB  |  325 lines

  1. package javax.swing.table;
  2.  
  3. import java.awt.Point;
  4. import java.awt.Rectangle;
  5. import java.beans.PropertyChangeEvent;
  6. import java.beans.PropertyChangeListener;
  7. import java.io.Serializable;
  8. import java.util.Enumeration;
  9. import java.util.Vector;
  10. import javax.swing.DefaultListSelectionModel;
  11. import javax.swing.ListSelectionModel;
  12. import javax.swing.event.ChangeEvent;
  13. import javax.swing.event.EventListenerList;
  14. import javax.swing.event.ListSelectionEvent;
  15. import javax.swing.event.ListSelectionListener;
  16. import javax.swing.event.TableColumnModelEvent;
  17. import javax.swing.event.TableColumnModelListener;
  18.  
  19. public class DefaultTableColumnModel implements TableColumnModel, PropertyChangeListener, ListSelectionListener, Serializable {
  20.    protected Vector tableColumns = new Vector();
  21.    protected ListSelectionModel selectionModel;
  22.    protected int columnMargin;
  23.    protected EventListenerList listenerList = new EventListenerList();
  24.    protected transient ChangeEvent changeEvent = null;
  25.    protected boolean columnSelectionAllowed;
  26.    protected int totalColumnWidth;
  27.    // $FF: synthetic field
  28.    static Class class$javax$swing$event$TableColumnModelListener;
  29.  
  30.    public DefaultTableColumnModel() {
  31.       this.setSelectionModel(this.createSelectionModel());
  32.       this.setColumnMargin(1);
  33.       this.setColumnSelectionAllowed(false);
  34.    }
  35.  
  36.    public void addColumn(TableColumn var1) {
  37.       if (var1 == null) {
  38.          throw new IllegalArgumentException("Object is null");
  39.       } else {
  40.          this.tableColumns.addElement(var1);
  41.          var1.addPropertyChangeListener(this);
  42.          this.recalcWidthCache();
  43.          this.fireColumnAdded(new TableColumnModelEvent(this, 0, this.getColumnCount() - 1));
  44.       }
  45.    }
  46.  
  47.    public void addColumnModelListener(TableColumnModelListener var1) {
  48.       this.listenerList.add(class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")), var1);
  49.    }
  50.  
  51.    // $FF: synthetic method
  52.    static Class class$(String var0) {
  53.       try {
  54.          return Class.forName(var0);
  55.       } catch (ClassNotFoundException var2) {
  56.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  57.       }
  58.    }
  59.  
  60.    protected ListSelectionModel createSelectionModel() {
  61.       return new DefaultListSelectionModel();
  62.    }
  63.  
  64.    protected void fireColumnAdded(TableColumnModelEvent var1) {
  65.       Object[] var2 = this.listenerList.getListenerList();
  66.  
  67.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  68.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")))) {
  69.             ((TableColumnModelListener)var2[var3 + 1]).columnAdded(var1);
  70.          }
  71.       }
  72.  
  73.    }
  74.  
  75.    protected void fireColumnMarginChanged() {
  76.       Object[] var1 = this.listenerList.getListenerList();
  77.  
  78.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  79.          if (var1[var2] == (class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")))) {
  80.             if (this.changeEvent == null) {
  81.                this.changeEvent = new ChangeEvent(this);
  82.             }
  83.  
  84.             ((TableColumnModelListener)var1[var2 + 1]).columnMarginChanged(this.changeEvent);
  85.          }
  86.       }
  87.  
  88.    }
  89.  
  90.    protected void fireColumnMoved(TableColumnModelEvent var1) {
  91.       Object[] var2 = this.listenerList.getListenerList();
  92.  
  93.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  94.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")))) {
  95.             ((TableColumnModelListener)var2[var3 + 1]).columnMoved(var1);
  96.          }
  97.       }
  98.  
  99.    }
  100.  
  101.    protected void fireColumnRemoved(TableColumnModelEvent var1) {
  102.       Object[] var2 = this.listenerList.getListenerList();
  103.  
  104.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  105.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")))) {
  106.             ((TableColumnModelListener)var2[var3 + 1]).columnRemoved(var1);
  107.          }
  108.       }
  109.  
  110.    }
  111.  
  112.    protected void fireColumnSelectionChanged(ListSelectionEvent var1) {
  113.       Object[] var2 = this.listenerList.getListenerList();
  114.  
  115.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  116.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")))) {
  117.             ((TableColumnModelListener)var2[var3 + 1]).columnSelectionChanged(var1);
  118.          }
  119.       }
  120.  
  121.    }
  122.  
  123.    public TableColumn getColumn(int var1) {
  124.       return (TableColumn)this.tableColumns.elementAt(var1);
  125.    }
  126.  
  127.    public int getColumnCount() {
  128.       return this.tableColumns.size();
  129.    }
  130.  
  131.    public int getColumnIndex(Object var1) {
  132.       if (var1 == null) {
  133.          throw new IllegalArgumentException("Identifier is null");
  134.       } else {
  135.          Enumeration var2 = this.getColumns();
  136.  
  137.          for(int var4 = 0; var2.hasMoreElements(); ++var4) {
  138.             TableColumn var3 = (TableColumn)var2.nextElement();
  139.             if (var1.equals(var3.getIdentifier())) {
  140.                return var4;
  141.             }
  142.          }
  143.  
  144.          throw new IllegalArgumentException("Identifier not found");
  145.       }
  146.    }
  147.  
  148.    public int getColumnIndexAtX(int var1) {
  149.       int var2 = 0;
  150.       Point var3 = new Point(var1, 1);
  151.       Rectangle var4 = new Rectangle(0, 0, 0, 3);
  152.  
  153.       for(Enumeration var5 = this.getColumns(); var5.hasMoreElements(); ++var2) {
  154.          TableColumn var6 = (TableColumn)var5.nextElement();
  155.          var4.width = var6.getWidth() + this.columnMargin;
  156.          if (var4.contains(var3)) {
  157.             return var2;
  158.          }
  159.  
  160.          var4.x += var4.width;
  161.       }
  162.  
  163.       return -1;
  164.    }
  165.  
  166.    public int getColumnMargin() {
  167.       return this.columnMargin;
  168.    }
  169.  
  170.    public boolean getColumnSelectionAllowed() {
  171.       return this.columnSelectionAllowed;
  172.    }
  173.  
  174.    public Enumeration getColumns() {
  175.       return this.tableColumns.elements();
  176.    }
  177.  
  178.    public int getSelectedColumnCount() {
  179.       if (this.selectionModel != null) {
  180.          int var1 = this.selectionModel.getMinSelectionIndex();
  181.          int var2 = this.selectionModel.getMaxSelectionIndex();
  182.          int var3 = 0;
  183.  
  184.          for(int var4 = var1; var4 <= var2; ++var4) {
  185.             if (this.selectionModel.isSelectedIndex(var4)) {
  186.                ++var3;
  187.             }
  188.          }
  189.  
  190.          return var3;
  191.       } else {
  192.          return 0;
  193.       }
  194.    }
  195.  
  196.    public int[] getSelectedColumns() {
  197.       if (this.selectionModel != null) {
  198.          int var1 = this.selectionModel.getMinSelectionIndex();
  199.          int var2 = this.selectionModel.getMaxSelectionIndex();
  200.          if (var1 != -1 && var2 != -1) {
  201.             int[] var3 = new int[1 + (var2 - var1)];
  202.             int var4 = 0;
  203.  
  204.             for(int var5 = var1; var5 <= var2; ++var5) {
  205.                if (this.selectionModel.isSelectedIndex(var5)) {
  206.                   var3[var4++] = var5;
  207.                }
  208.             }
  209.  
  210.             int[] var6 = new int[var4];
  211.             System.arraycopy(var3, 0, var6, 0, var4);
  212.             return var6;
  213.          } else {
  214.             return new int[0];
  215.          }
  216.       } else {
  217.          return new int[0];
  218.       }
  219.    }
  220.  
  221.    public ListSelectionModel getSelectionModel() {
  222.       return this.selectionModel;
  223.    }
  224.  
  225.    public int getTotalColumnWidth() {
  226.       return this.totalColumnWidth;
  227.    }
  228.  
  229.    public void moveColumn(int var1, int var2) {
  230.       if (var1 >= 0 && var1 < this.getColumnCount() && var2 >= 0 && var2 < this.getColumnCount()) {
  231.          if (var1 != var2) {
  232.             TableColumn var3 = (TableColumn)this.tableColumns.elementAt(var1);
  233.             boolean var4 = false;
  234.             if (this.selectionModel.isSelectedIndex(var1)) {
  235.                this.selectionModel.removeSelectionInterval(var1, var1);
  236.                var4 = true;
  237.             }
  238.  
  239.             this.tableColumns.removeElementAt(var1);
  240.             this.tableColumns.insertElementAt(var3, var2);
  241.             if (var4) {
  242.                this.selectionModel.addSelectionInterval(var2, var2);
  243.             }
  244.  
  245.             this.fireColumnMoved(new TableColumnModelEvent(this, var1, var2));
  246.          }
  247.       } else {
  248.          throw new IllegalArgumentException("moveColumn() - Index out of range");
  249.       }
  250.    }
  251.  
  252.    public void propertyChange(PropertyChangeEvent var1) {
  253.       String var2 = var1.getPropertyName();
  254.       if ("columWidth".equals(var2)) {
  255.          this.recalcWidthCache();
  256.       } else if (!"headerValue".equals(var2) && !"headerRenderer".equals(var2)) {
  257.          "cellRenderer".equals(var2);
  258.       }
  259.  
  260.    }
  261.  
  262.    protected void recalcWidthCache() {
  263.       Enumeration var1 = this.getColumns();
  264.  
  265.       for(this.totalColumnWidth = 0; var1.hasMoreElements(); this.totalColumnWidth += ((TableColumn)var1.nextElement()).getWidth() + this.columnMargin) {
  266.       }
  267.  
  268.    }
  269.  
  270.    public void removeColumn(TableColumn var1) {
  271.       int var2 = this.tableColumns.indexOf(var1);
  272.       if (var2 != -1) {
  273.          if (this.selectionModel != null) {
  274.             this.selectionModel.removeIndexInterval(var2, var2);
  275.          }
  276.  
  277.          var1.removePropertyChangeListener(this);
  278.          this.tableColumns.removeElementAt(var2);
  279.          this.recalcWidthCache();
  280.          this.fireColumnRemoved(new TableColumnModelEvent(this, this.getColumnCount() - 1, 0));
  281.       }
  282.  
  283.    }
  284.  
  285.    public void removeColumnModelListener(TableColumnModelListener var1) {
  286.       this.listenerList.remove(class$javax$swing$event$TableColumnModelListener != null ? class$javax$swing$event$TableColumnModelListener : (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")), var1);
  287.    }
  288.  
  289.    public void setColumnMargin(int var1) {
  290.       if (var1 != this.columnMargin) {
  291.          this.columnMargin = var1;
  292.          this.recalcWidthCache();
  293.          this.fireColumnMarginChanged();
  294.       }
  295.  
  296.    }
  297.  
  298.    public void setColumnSelectionAllowed(boolean var1) {
  299.       this.columnSelectionAllowed = var1;
  300.    }
  301.  
  302.    public void setSelectionModel(ListSelectionModel var1) {
  303.       if (var1 == null) {
  304.          throw new IllegalArgumentException("Cannot set a null SelectionModel");
  305.       } else {
  306.          ListSelectionModel var2 = this.selectionModel;
  307.          if (var1 != var2) {
  308.             if (var2 != null) {
  309.                var2.removeListSelectionListener(this);
  310.             }
  311.  
  312.             this.selectionModel = var1;
  313.             if (var1 != null) {
  314.                var1.addListSelectionListener(this);
  315.             }
  316.          }
  317.  
  318.       }
  319.    }
  320.  
  321.    public void valueChanged(ListSelectionEvent var1) {
  322.       this.fireColumnSelectionChanged(var1);
  323.    }
  324. }
  325.